// 在Express框架应用中使用session会话

// 1. 导入express、session-parser
const express = require("express");
const session = require("express-session");
const MongoStore = require('connect-mongo');
// 2. 创建一个app应用
const app = express();
// 通过中间件使用session，并做session的各种配置
app.use(session({
    name: 'sid',   //设置cookie的name，默认值是：connect.sid
    secret: 'atguigu', //参与加密的字符串（又称签名）
    saveUninitialized: false, //是否为每次请求都设置一个cookie用来存储sessionid
    resave: true,//是否在每次请求时重新保存session
    store:MongoStore.create({
        mongoUrl: 'mongodb://127.0.0.1:27017/mydb' //数据库的连接配置
    }),
    cookie: {
        httpOnly: true, // 开启后前端无法通过 JS 操作
        maxAge: 1000 * 300 // 这一条 是控制 sessionID 的过期时间的！！！
    },
}));

// 3. 设置多个请求路由，并作出响应
// (get /set) 设置session信息
app.get("/set", (req, res) => {
    req.session.username = "lisi";
    req.session.email = "lisi@163.com";
    res.send("设置session信息");
});

// (get /get) 读取session信息
app.get("/get", (req, res) => {
    // 通过req里面的sessions获取请求中的session信息
    res.send("读取session信息 " + req.session.username +" "+ req.session.email);
});

// (get /clear) 清除session信息
app.get("/clear", (req, res) => {
    // 删除session信息；
    req.session.destroy(() => {
        res.send('清理完成');
    });
});

// 4. 设置监听端口，并开启服务
app.listen(3000, () => {
    console.log("服务已开启，端口：3000");
});